package com.gxa.p2p.service;

import com.gxa.p2p.pojo.SysUser;

import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;

/**
 * TODO
 *
 * @author Longlin_Feng
 * @date 2020/8/2
 */
public interface SysUserService {
  /**
   * 添加系统用户
   *
   * @param sysUser 封装的系统用户对象
   */
  boolean add(SysUser sysUser);

  /**
   * 移除系统用户
   *
   * @param id 要移除用户的id
   * @return boolean 表示移除成功或失败
   */
  boolean remove(Integer id);

  /**
   * 批量删除系统用户
   *
   * @param idList 要移除用户的id列表
   * @return boolean 表示移除成功或失败
   */
  boolean removeByBatch(List<Integer> idList);

  /**
   * 修改系统用户信息
   *
   * @param sysUser 目标用户信息封装的用户对象
   * @return boolean 修改成功或失败
   */
  boolean edit(SysUser sysUser);

  /**
   * 分页查询
   *
   * @param paramMap 参数映射表:包含page,limit,和可能有的查询条件
   * @return List<SysUser>
   */
  List<SysUser> findByPage(Map<String, Object> paramMap);

  /**
   * 登录接口
   *
   * @param jobNumber 工号
   * @param password 密码
   * @param remoteAddr 发起请求的ip
   * @return SysUser 查询到的登录的用户
   */
  SysUser login(String jobNumber, String password, String remoteAddr) throws UnknownHostException;

  /**
   * 按条件全查询
   *
   * @param paramMap 参数映射表
   * @return List<SysUser>
   */
  List<SysUser> findAll(Map<String, Object> paramMap);

  /**
   * 职务变更
   *
   * @param sysUser 职务变更后的目标对象
   * @return boolean 变更成功/失败
   */
  boolean positionChange(SysUser sysUser);

  /**
   * 计数
   *
   * @param paramMap 参数映射表
   * @return count 总数
   */
  Integer getCount(Map<String, Object> paramMap);
}
